//! \file Sequence.h
//! \brief Defines the <code>fullsail_ai::fundamentals::Sequence</code> class.
//! \author Jeremiah Blanchard
#ifndef _FULLSAIL_AI_FUNDAMENTALS_SEQUENCE_H_
#define _FULLSAIL_AI_FUNDAMENTALS_SEQUENCE_H_

#include <vector>
#include "Behavior.h"

namespace fullsail_ai { namespace fundamentals {

	//! \brief C++ implementation of sequence for behavior trees.
	class Sequence : public Behavior
	{
	public:
		//! \brief Creates a new <code>%Sequence</code>with the description.
		Sequence(char const* _description);

		//! \brief Executes the behavior. Returns true (and runs dataFunction) on success, false otherwise.
		//!
		//! \param   dataFunction  a single-argument function that accepts the behavior as 
		//!                        a valid argument.
		//!
		//! \pre     <code>NULL !=</code> \a this
		bool run(void (*dataFunction)(Behavior const*), Agent* agent);
	};

}}  // namespace fullsail_ai::fundamentals

#endif  // _FULLSAIL_AI_FUNDAMENTALS_SEQUENCE_H_
